package cn.iocoder.yudao.module.diy.service.poster;

import javax.validation.*;

import cn.hutool.json.JSONArray;
import cn.iocoder.yudao.module.diy.*;
import cn.iocoder.yudao.module.diy.controller.admin.poster.vo.*;
import cn.iocoder.yudao.module.diy.dal.dataobject.poster.PosterDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 装修海报 Service 接口
 *
 * @author 芋道源码
 */
public interface PosterService {

    /**
     * 创建装修海报
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPoster(@Valid PosterSaveReqVO createReqVO);

    /**
     * 更新装修海报
     *
     * @param updateReqVO 更新信息
     */
    void updatePoster(@Valid PosterSaveReqVO updateReqVO);

    /**
     * 删除装修海报
     *
     * @param id 编号
     */
    void deletePoster(Long id);

    /**
     * 获得装修海报
     *
     * @param id 编号
     * @return 装修海报
     */
    PosterDO getPoster(Long id);

    /**
     * 获得装修海报分页
     *
     * @param pageReqVO 分页查询
     * @return 装修海报分页
     */
    PageResult<PosterDO> getPosterPage(PosterPageReqVO pageReqVO);

    /**
     * 自定义海报初始化数据
     * @param param
     */
    PosterInitVo init(PosterInitParam param);

    /**
     * 海报模板
     * @param addon
     * @param type
     * @return
     */
    JSONArray template(String addon, String type);

    /**
     * 根据ID去编辑海报
     * @param id
     * @param editParam
     */
    void edit(Long id, SysPosterParam editParam);

    /**
     * 修改自定义海报状态
     *
     * @param id
     * @param status
     */
    void modifyStatus(Integer id, Integer status);
    /**
     * 将自定义海报修改为默认海报
     *
     * @param id
     */
    void modifyDefault(Integer id);
    /**
     * 预览海报
     * @param param
     */
    String preview(PreviewPosterParam param);
    /**
     * 获取海报
     *
     * @param param
     */
    String get(GetPosterParam param);

}